/*
 *
 * *******************************************************************
 *   @项目名称: BHex Android
 *   @文件名称: UserInfoBean.java
 *   @Date: 11/29/18 3:21 PM
 *   @Author: chenjun
 *   @Copyright（C）: 2018 BlueHelix Inc.   All rights reserved.
 *   注意：本内容仅限于内部传阅，禁止外泄以及用于其他的商业目的.
 *  *******************************************************************
 *
 */

package io.bhex.sdk.account.bean;

import java.util.List;

import io.bhex.baselib.network.response.BaseResponse;


public class UserInfoBean extends BaseResponse {

    /**
     * userId : 1099865787687
     * mobile : *******0981
     * email : ren*******@bhex.io
     * bindGA : false
     */

    private String userId;
    private String mobile;
    private String email;
    // 是否绑定GA
    private boolean bindGA;
    /**
     * registerType : 1
     * verifyStatus : 1
     * accounts : [{"accountId":"369625160812712","accountName":"主账户","accountType":"main"}]
     * defaultAccountId : 369625160812712
     */

    private int registerType; //1 手机号  2 邮箱
    // 0 未实名 1 实名信息审核中 2 审核通过  3 审核失败，请重新实名
    private int verifyStatus;
    private String defaultAccountId;
    //注册日期
    private String registerDate;
    private List<AccountsBean> accounts;

    public WhiteConfigBean whiteConfig;
    public boolean openOption;// 是否开通期权
    public boolean openFuture;// 是否开通期货
    /**
     * userType : 1
     * 1 普通用户 2 企业用户
     */

    private int userType;
    /**
     * bindTradePwd : false
     * accounts : []
     * favoritesMap : [{"id":"194","exchangeId":"301","symbolId":"BHCETH"},{"id":"192","exchangeId":"301","symbolId":"ETCBTC"},{"id":"193","exchangeId":"301","symbolId":"ETCUSDT"},{"id":"195","exchangeId":"301","symbolId":"ETHBTC"},{"id":"189","exchangeId":"301","symbolId":"ETHUSDT"},{"id":"190","exchangeId":"301","symbolId":"LTCUSDT"}]
     */

    private boolean bindTradePwd;
    private boolean bindPassword;   // 是否有账户密码
    private List<FavoritesBean> favorites;
    /**
     * nationalCode : 86
     * kycLevel : 20
     * kycVerifyStatus : 2
     * displayLevel : 2
     * accounts : []
     * source :
     * isAgent : 0
     * customLabelList : [{"orgId":"6002","labelId":"524433612796592384","colorCode":"#ff695e","language":"zh_CN","labelValue":"专属"}]
     */

    private String nationalCode;
    private int kycLevel;
    private int kycVerifyStatus;
    private String displayLevel;
    private String source;
    private int isAgent;
    private List<CustomLabelListBean> customLabelList;


    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public boolean isBindGA() {
        return bindGA;
    }

    public void setBindGA(boolean bindGA) {
        this.bindGA = bindGA;
    }

    public int getRegisterType() {
        return registerType;
    }

    public void setRegisterType(int registerType) {
        this.registerType = registerType;
    }

    public int getVerifyStatus() {
        return verifyStatus;
    }

    public void setVerifyStatus(int verifyStatus) {
        this.verifyStatus = verifyStatus;
    }

    public String getDefaultAccountId() {
        return defaultAccountId;
    }

    public void setDefaultAccountId(String defaultAccountId) {
        this.defaultAccountId = defaultAccountId;
    }

    public List<AccountsBean> getAccounts() {
        return accounts;
    }

    public void setAccounts(List<AccountsBean> accounts) {
        this.accounts = accounts;
    }

    public int getUserType() {
        return userType;
    }

    public void setUserType(int userType) {
        this.userType = userType;
    }

    public String getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(String registerDate) {
        this.registerDate = registerDate;
    }

    public boolean isBindTradePwd() {
        return bindTradePwd;
    }

    public void setBindTradePwd(boolean bindTradePwd) {
        this.bindTradePwd = bindTradePwd;
    }

    public boolean isBindPassword() {
        return bindPassword;
    }

    public void setBindPassword(boolean bindPassword) {
        this.bindPassword = bindPassword;
    }

    public boolean isCanTrade() {
        if(whiteConfig != null)
            return whiteConfig.canTrade;
        return true;
    }

    public boolean isCanWithdraw(){
        if(whiteConfig != null)
            return whiteConfig.canWithdraw;
        return true;
    }
    public List<FavoritesBean> getFavorites() {
        return favorites;
    }

    public void setFavorites(List<FavoritesBean> favorites) {
        this.favorites = favorites;
    }

    public String getNationalCode() {
        return nationalCode;
    }

    public void setNationalCode(String nationalCode) {
        this.nationalCode = nationalCode;
    }

    public int getKycLevel() {
        return kycLevel;
    }

    public void setKycLevel(int kycLevel) {
        this.kycLevel = kycLevel;
    }

    public int getKycVerifyStatus() {
        return kycVerifyStatus;
    }

    public void setKycVerifyStatus(int kycVerifyStatus) {
        this.kycVerifyStatus = kycVerifyStatus;
    }

    public String getDisplayLevel() {
        return displayLevel;
    }

    public void setDisplayLevel(String displayLevel) {
        this.displayLevel = displayLevel;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public int getIsAgent() {
        return isAgent;
    }

    public void setIsAgent(int isAgent) {
        this.isAgent = isAgent;
    }

    public List<CustomLabelListBean> getCustomLabelList() {
        return customLabelList;
    }

    public void setCustomLabelList(List<CustomLabelListBean> customLabelList) {
        this.customLabelList = customLabelList;
    }

    public static class AccountsBean {
        /**
         * accountId : 369625160812712
         * accountName : 主账户
         * accountType : main
         */

        private String accountId;
        private String accountName;
        private String accountType;

        public String getAccountId() {
            return accountId;
        }

        public void setAccountId(String accountId) {
            this.accountId = accountId;
        }

        public String getAccountName() {
            return accountName;
        }

        public void setAccountName(String accountName) {
            this.accountName = accountName;
        }

        public String getAccountType() {
            return accountType;
        }

        public void setAccountType(String accountType) {
            this.accountType = accountType;
        }
    }

    public static class FavoritesBean {
        /**
         * id : 194
         * exchangeId : 301
         * symbolId : BHCETH
         */

        private String id;
        private String exchangeId;
        private String symbolId;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getExchangeId() {
            return exchangeId;
        }

        public void setExchangeId(String exchangeId) {
            this.exchangeId = exchangeId;
        }

        public String getSymbolId() {
            return symbolId;
        }

        public void setSymbolId(String symbolId) {
            this.symbolId = symbolId;
        }
    }

    public static class WhiteConfigBean {

        public boolean canTrade;
        public boolean canWithdraw;

    }

    public static class CustomLabelListBean {
        /**
         * orgId : 6002
         * labelId : 524433612796592384
         * colorCode : #ff695e
         * language : zh_CN
         * labelValue : 徐义恒专属
         */

        private String orgId;
        private String labelId;
        private String colorCode;
        private String language;
        private String labelValue;

        public String getOrgId() {
            return orgId;
        }

        public void setOrgId(String orgId) {
            this.orgId = orgId;
        }

        public String getLabelId() {
            return labelId;
        }

        public void setLabelId(String labelId) {
            this.labelId = labelId;
        }

        public String getColorCode() {
            return colorCode;
        }

        public void setColorCode(String colorCode) {
            this.colorCode = colorCode;
        }

        public String getLanguage() {
            return language;
        }

        public void setLanguage(String language) {
            this.language = language;
        }

        public String getLabelValue() {
            return labelValue;
        }

        public void setLabelValue(String labelValue) {
            this.labelValue = labelValue;
        }
    }
}
